// 故事相关词语库
const storyWords = [
  // 角色词
  "王子", "公主", "骑士", "巫师", "海盗", "农民", "小偷", "士兵", "商人", "守卫",
"探险家", "猎人", "渔夫", "艺术家", "科学家", "侦探", "医生", "警察", "老师", "学生",
"国王", "王后", "女巫", "巨龙", "巨人", "农夫", "仙女", "食人魔", "美人鱼", "精灵",
"矮人", "独角兽", "狼", "乞丐", "法师", "幽灵", "巨魔", "面包师", "水手", "吟游诗人",
"炼金术士", "驯兽师", "占星师", "铁匠", "裁缝", "小丑", "吸血鬼", "狼人", "天使", "恶魔",
  
  // 地点词
  "城堡", "森林", "海洋", "沙漠", "山洞", "城市", "乡村", "岛屿", "学校", "医院",
"监狱", "公园", "博物馆", "市场", "工厂", "农场", "宫殿", "神庙", "港口", "火车站",
"高塔", "墓地", "集市", "桥", "花园", "地牢", "雪山", "迷宫", "小屋", "火山",
"云端", "废墟", "沼泽", "地下城", "竞技场", "酒馆", "钟楼", "风车", "彩虹桥", "极光之地",
  
  // 事件词
  "冒险", "逃亡", "战斗", "发现", "失窃", "变身", "迷路", "庆祝", "比赛", "寻宝",
"拯救", "解谜", "旅行", "复仇", "学习", "建造", "捕捉", "表演", "营救", "探索",
"婚礼", "诅咒", "宴会", "背叛", "谜题", "风暴", "失踪", "预言", "陷阱", "赛跑",
"魔法失效", "日出", "月圆", "洪水", "干旱", "复活", "沉睡", "变形", "决斗", "瘟疫",
"起义", "陨石坠落", "时间倒流", "空间扭曲", "灵魂交换", "神谕降临", "黑市交易", "秘密结盟",
  
  // 情感词
  "快乐", "悲伤", "愤怒", "恐惧", "惊讶", "好奇", "焦虑", "兴奋", "感动", "困惑",
"嫉妒", "骄傲", "安心", "忧虑", "孤独", "激动", "平静", "尴尬", "失望", "满足",
"绝望", "希望", "愧疚", "羞耻", "狂喜", "麻木", "憎恨", "爱慕", "空虚", "感恩",
  
  // 状态词
  "濒死", "疲惫", "迷惑", "富裕", "贫穷", "健康", "生病", "强壮", "虚弱", "聪明",
"愚笨", "漂亮", "丑陋", "年轻", "年老", "勇敢", "懦弱", "诚实", "狡猾", "忠诚",
"疯狂", "清醒", "中毒", "石化", "隐身", "飞行", "幻影", "不朽", "失忆", "重生",
  
  // 物品词
  "宝剑", "魔法棒", "地图", "钥匙", "药水", "书籍", "宝藏", "食物", "武器", "盾牌",
"绳索", "纸条", "戒指", "项链", "眼镜", "手表", "背包", "帽子", "衣服", "鞋子",
"王冠", "魔镜", "灯笼", "法杖", "护身符", "匕首", "卷轴", "竖琴", "篮子", "蜡烛",
"金币", "玫瑰", "苹果", "羽毛", "斗篷", "瓶子", "怀表", "沙漏", "水晶球", "龙鳞",
"毒苹果", "许愿井", "时光机", "隐身斗篷", "预言水晶", "精灵粉尘", "巨人牙齿", "海盗罗盘",
  
  // 概念词
  "计划", "梦想", "正义", "邪恶", "魔法", "科技", "友情", "爱情", "家庭", "战争",
  "和平", "自由", "权力", "命运", "时间", "空间", "生命", "死亡", "记忆", "希望",
  "混沌", "秩序", "轮回", "预言", "诅咒", "祝福", "真理", "谎言", "牺牲", "救赎",
  "平行世界", "元素之力", "血契", "灵魂契约", "永恒诅咒", "禁忌知识", "神之试炼", "末日预言",

  // 特性或描述词
  "隐形的", "被施咒的", "会说话的", "破碎的", "金色的", "银色的", "古老的", "神秘的",
"邪恶的", "善良的", "愚蠢的", "聪明的", "饥饿的", "永恒的", "沉睡的", "失踪的",
"被盗的", "被遗忘的", "受祝福的", "受诅咒的", "发光的", "腐烂的", "漂浮的", "透明的",
"剧毒的", "神圣的", "被封印的", "活着的", "机械的", "虚幻的", "扭曲的", "寄生的"
];

// 结局库
const endings = [
  "于是，主角终于明白了真相，原来一切都是一场误会。",
  "最终，所有人都找到了各自想要的东西，他们过上了幸福的生活。",
  "经历了这次冒险，他们成为了最好的朋友，并约定明年再次相聚。",
  "随着真相大白，所有的阴谋都被揭露，正义得到了伸张。",
  "所以他们将失窃的东西物归原主，故事结束。",
  "最后，他发现这一切都只是一场梦，但这个梦改变了他的一生。",
  "他们终于找到了传说中的宝藏，但决定将它捐给了博物馆。",
  "历经千辛万苦，他们终于到达了目的地，却发现那里已经物是人非。",
  "在经历了这一切后，主角决定放下过去，开始新的生活。",
  "曲折的旅程结束了，但他们的友谊将永远持续下去。",
  "最后，他们发现真正的魔法是存在于人们心中的善良。",
  "终于，所有的谜题都被解开，每个人都找到了自己的归宿。",
  "经过这次历险，他们学会了团队合作的重要性。",
  "虽然没有找到想要的东西，但他们在旅途中收获了珍贵的友情。",
  "所以，这个传说被永远地保存下来，激励着一代又一代的人们。",
  "就这样，这段不可思议的旅程画上了句号，但新的冒险即将开始。",
  "最终，他们明白了生命的真谛不在目的地，而在于旅途的过程。",
  "他们打败了邪恶势力，为世界带来了和平与安宁。",
  "就这样，主角终于实现了自己的梦想，成为了真正的英雄。",
  "最后，他们选择了原谅，因为他们明白仇恨只会带来更多的痛苦。",
  "当最后一页魔法书合上时，整个王国的时间静止了，故事永远定格在最美好的瞬间。",
"他们用找到的许愿水晶许下心愿，整个世界在星光中重组，变成了理想中的模样。",
"黎明时分，主角在镜中发现自己的倒影变成了曾经最想成为的那个人。",
"随着最后一个谎言被揭穿，所有被扭曲的记忆如雪花般消散，真实的历史终于浮现。",
"在解开上古封印的那一刻，他们才意识到自己就是传说中预言要封印的恶魔。",
"当两把命运之剑相击时，平行世界的通道被打开，主角看见了自己截然不同的人生。",
"最终仪式上，主角自愿将王冠融化成金水，浇铸成了通往新世界的钥匙。",
"在吃掉最后一个魔法苹果后，所有人突然想起这已经是他们第一千次重复这个故事。",
"当月光第三次变成蓝色时，他们发现所谓冒险只是神明棋盘上的一局游戏。",
"最终他们选择用宝藏复活了最初的敌人，因为理解到对立本就是命运的安排。",
"在时空裂缝闭合前的最后一秒，主角把写满真相的日记本抛向了未知的维度。",
"当预言中的英雄全部牺牲后，人们才明白真正的救赎来自平凡人的觉醒。",
"解药在最后一刻研制成功，但主角选择让瘟疫继续存在——它让人类学会了共情。",
"当魔法钟楼的指针倒转十二圈后，所有参与者都忘记了这次冒险，除了那个小丑。",
"在终极谜题前，他们发现所有线索拼出的答案是'这个故事不存在'。",
"最终决战时，天空突然降下写满剧本的羊皮纸，角色们发现自己只是故事中的角色。",
"当主角握住权杖的瞬间，整个王国化作墨水回流到作者桌上的羽毛笔尖。",
"在获得永生的那一刻，他们选择集体沉睡，因为无限的生命需要无限的梦来填充。",
"最后一个幸存者打开宝箱，里面只躺着一面映出无数平行世界的镜子。",
"当诅咒解除时，所有角色都变成了纸牌上的图案，等待下一局游戏开始。"
];

Page({
  data: {
    playerCount: 4, // 默认4名玩家
    results: [], // 所有玩家的词语和结局
    started: false, // 是否已开始游戏
    currentPlayerIndex: 0, // 当前查看的玩家索引
    showPlayerView: false, // 是否显示玩家视图
    isRedrawing: false, // 是否正在重抽结局
    redrawCount: 0, // 重抽次数统计
  },

  // 更改玩家数量（滑块方式）
  changePlayerCount: function(e) {
    this.setData({
      playerCount: parseInt(e.detail.value)
    });
  },
  
  // 更改玩家数量（输入框方式）
  inputPlayerCount: function(e) {
    let value = e.detail.value;
    
    // 移除非数字字符
    value = value.replace(/[^\d]/g, '');
    
    // 转换为数字并限制范围
    let count = parseInt(value);
    
    // 处理空值或NaN
    if (isNaN(count) || value === '') {
      return; // 保持原值，不更新
    }
    
    // 限制范围在2-10之间
    if (count < 2) {
      count = 2;
    } else if (count > 10) {
      count = 10;
    }
    
    this.setData({
      playerCount: count
    });
    
    return count.toString(); // 返回处理后的值
  },

  // 开始游戏，为每个玩家抽取词语和结局
  startGame: function() {
    const results = [];
    
    // 为每位玩家抽取5个词和1个结局
    for (let i = 0; i < this.data.playerCount; i++) {
      const playerWords = this.getRandomWords(5);
      const playerEnding = this.getRandomEnding();
      
      results.push({
        words: playerWords,
        ending: playerEnding,
        redrawCount: 0 // 记录每个玩家的重抽次数
      });
    }
    
    this.setData({
      results: results,
      started: true,
      currentPlayerIndex: 0,
      showPlayerView: false
    });
  },

  // 随机获取n个不重复的词语
  getRandomWords: function(n) {
    const tempWords = [...storyWords];
    const selectedWords = [];
    
    for (let i = 0; i < n; i++) {
      const randomIndex = Math.floor(Math.random() * tempWords.length);
      selectedWords.push(tempWords[randomIndex]);
      tempWords.splice(randomIndex, 1);
    }
    
    return selectedWords;
  },

  // 获取随机结局
  getRandomEnding: function() {
    const randomIndex = Math.floor(Math.random() * endings.length);
    return endings[randomIndex];
  },

  // 重新抽取结局 - 带动画效果
  redrawEnding: function() {
    if (this.data.isRedrawing) return; // 防止快速连续点击
    
    this.setData({
      isRedrawing: true
    });
    
    let results = this.data.results;
    const currentPlayer = this.data.currentPlayerIndex;
    const oldEnding = results[currentPlayer].ending;
    let newEnding = '';
    
    // 确保新结局与旧结局不同
    do {
      newEnding = this.getRandomEnding();
    } while (newEnding === oldEnding);
    
    // 更新重抽次数
    results[currentPlayer].redrawCount = (results[currentPlayer].redrawCount || 0) + 1;
    
    // 显示重抽动画效果
    wx.showLoading({
      title: '正在重抽结局...',
      mask: true
    });
    
    // 延时更新，模拟"抽取"过程
    setTimeout(() => {
      results[currentPlayer].ending = newEnding;
      
      this.setData({
        results: results,
        redrawCount: this.data.redrawCount + 1,
        isRedrawing: false
      });
      
      wx.hideLoading();
      
      // 显示成功提示
      wx.showToast({
        title: '结局已更新！',
        icon: 'success',
        duration: 1500
      });
    }, 800);
  },

  // 显示玩家视图
  showPlayerCards: function() {
    this.setData({
      showPlayerView: true
    });
  },

  // 隐藏玩家视图
  hidePlayerCards: function() {
    this.setData({
      showPlayerView: false
    });
  },

  // 切换到上一个玩家
  prevPlayer: function() {
    let newIndex = this.data.currentPlayerIndex - 1;
    if (newIndex < 0) {
      newIndex = this.data.playerCount - 1;
    }
    
    this.setData({
      currentPlayerIndex: newIndex
    });
  },

  // 切换到下一个玩家
  nextPlayer: function() {
    let newIndex = this.data.currentPlayerIndex + 1;
    if (newIndex >= this.data.playerCount) {
      newIndex = 0;
    }
    
    this.setData({
      currentPlayerIndex: newIndex
    });
  },

  // 分享功能
  onShareAppMessage: function() {
    return {
      title: '一起编故事 - 集体创作精彩故事',
      path: '/pages/story/story',
      imageUrl: ''
    }
  }
}) 